home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 25 / Cream of the Crop 25.iso / doom / axxwar_1.zip / SOURCES / HKNIGHT.QC < prev    next >
Text File  |  1997-02-18  |  19KB  |  449 lines

  1. // AXXCfg II Release 6 
  2.  
  3. /*
  4. ==============================================================================
  5.  
  6. KNIGHT
  7.  
  8. ==============================================================================
  9. */
  10.  
  11. $cd id1/models/knight2
  12. $origin 0 0 24
  13. $base base
  14. $skin skin
  15.  
  16. $frame stand1 stand2 stand3 stand4 stand5 stand6 stand7 stand8 stand9
  17.  
  18. $frame walk1 walk2 walk3 walk4 walk5 walk6 walk7 walk8 walk9
  19. $frame walk10 walk11 walk12 walk13 walk14 walk15 walk16 walk17
  20. $frame walk18 walk19 walk20
  21.  
  22. $frame run1 run2 run3 run4 run5 run6 run7 run8
  23.  
  24. $frame pain1 pain2 pain3 pain4 pain5
  25.  
  26. $frame death1 death2 death3 death4 death5 death6 death7 death8
  27. $frame death9 death10 death11 death12
  28.  
  29. $frame deathb1 deathb2 deathb3 deathb4 deathb5 deathb6 deathb7 deathb8
  30. $frame deathb9
  31.  
  32. $frame char_a1 char_a2 char_a3 char_a4 char_a5 char_a6 char_a7 char_a8
  33. $frame char_a9 char_a10 char_a11 char_a12 char_a13 char_a14 char_a15 char_a16
  34.  
  35. $frame magica1 magica2 magica3 magica4 magica5 magica6 magica7 magica8
  36. $frame magica9 magica10 magica11 magica12 magica13 magica14
  37.  
  38. $frame magicb1 magicb2 magicb3 magicb4 magicb5 magicb6 magicb7 magicb8
  39. $frame magicb9 magicb10 magicb11 magicb12 magicb13
  40.  
  41. $frame char_b1 char_b2 char_b3 char_b4 char_b5 char_b6
  42.  
  43. $frame slice1 slice2 slice3 slice4 slice5 slice6 slice7 slice8 slice9 slice10
  44.  
  45. $frame smash1 smash2 smash3 smash4 smash5 smash6 smash7 smash8 smash9 smash10
  46. $frame smash11
  47.  
  48. $frame w_attack1 w_attack2 w_attack3 w_attack4 w_attack5 w_attack6 w_attack7 
  49. $frame w_attack8 w_attack9 w_attack10 w_attack11 w_attack12 w_attack13 w_attack14
  50. $frame w_attack15 w_attack16 w_attack17 w_attack18 w_attack19 w_attack20 
  51. $frame w_attack21 w_attack22 
  52.  
  53. $frame magicc1 magicc2 magicc3 magicc4 magicc5 magicc6 magicc7 magicc8
  54. $frame magicc9 magicc10 magicc11
  55.  
  56.  
  57. void() hknight_char_a1;
  58. void() hknight_run1;
  59. void() hk_idle_sound;
  60.  
  61. void(float offset) hknight_shot =
  62. {
  63.     local    vector    offang;
  64.     local    vector    org, vec;
  65.     
  66.     offang = vectoangles (self.enemy.origin - self.origin);
  67.     offang_y = offang_y + offset * 6;
  68.     
  69.     makevectors (offang);
  70.  
  71.     org = self.origin + self.mins + self.size*0.5 + v_forward * 20;
  72.  
  73. // set missile speed
  74.     vec = normalize (v_forward);
  75.     vec_z = 0 - vec_z + (random() - 0.5)*0.1;
  76.     
  77.     launch_spike (org, vec);
  78.     newmis.classname = "knightspike";
  79.     setmodel (newmis, "progs/k_spike.mdl");
  80.     setsize (newmis, VEC_ORIGIN, VEC_ORIGIN);        
  81.     newmis.velocity = vec*300;
  82.     sound (self, CHAN_WEAPON, "hknight/attack1.wav", 1, ATTN_NORM);
  83.     SoundCheck(self.origin, SC_MED, self.enemy); // AXXND
  84.  
  85. };
  86.  
  87. void() CheckForCharge =
  88. {
  89. // check for mad charge
  90. if (!enemy_vis)
  91.     return;
  92. if (time < self.attack_finished)
  93.     return;    
  94. if ( fabs(self.origin_z - self.enemy.origin_z) > 20)
  95.     return;        // too much height change
  96. if ( vlen (self.origin - self.enemy.origin) < 80)
  97.     return;        // use regular attack
  98.  
  99. // charge        
  100.     SUB_AttackFinished (2);
  101.     hknight_char_a1 ();
  102.  
  103. };
  104.  
  105. void() CheckContinueCharge =
  106. {
  107.     if (time > self.attack_finished)
  108.     {
  109.         SUB_AttackFinished (3);
  110.         hknight_run1 ();
  111.         return;        // done charging
  112.     }
  113.     if (random() > 0.5)
  114.         sound (self, CHAN_WEAPON, "knight/sword2.wav", 1, ATTN_NORM);
  115.     else
  116.         sound (self, CHAN_WEAPON, "knight/sword1.wav", 1, ATTN_NORM);
  117. SoundCheck(self.origin, SC_SHORT, self.enemy); // AXXND
  118.  
  119. };
  120.  
  121. //===========================================================================
  122.  
  123. void()    hknight_stand1    =[    $stand1,    hknight_stand2    ] {ai_stand();};
  124. void()    hknight_stand2    =[    $stand2,    hknight_stand3    ] {ai_stand();};
  125. void()    hknight_stand3    =[    $stand3,    hknight_stand4    ] {ai_stand();};
  126. void()    hknight_stand4    =[    $stand4,    hknight_stand5    ] {ai_stand();};
  127. void()    hknight_stand5    =[    $stand5,    hknight_stand6    ] {ai_stand();};
  128. void()    hknight_stand6    =[    $stand6,    hknight_stand7    ] {ai_stand();};
  129. void()    hknight_stand7    =[    $stand7,    hknight_stand8    ] {ai_stand();};
  130. void()    hknight_stand8    =[    $stand8,    hknight_stand9    ] {ai_stand();};
  131. void()    hknight_stand9    =[    $stand9,    hknight_stand1    ] {ai_stand();};
  132.  
  133. //===========================================================================
  134.  
  135. void()    hknight_walk1    =[    $walk1,        hknight_walk2    ] {
  136. hk_idle_sound();
  137. ai_walk(2);};
  138. void()    hknight_walk2    =[    $walk2,        hknight_walk3    ] {ai_walk(5);};
  139. void()    hknight_walk3    =[    $walk3,        hknight_walk4    ] {ai_walk(5);};
  140. void()    hknight_walk4    =[    $walk4,        hknight_walk5    ] {ai_walk(4);};
  141. void()    hknight_walk5    =[    $walk5,        hknight_walk6    ] {ai_walk(4);};
  142. void()    hknight_walk6    =[    $walk6,        hknight_walk7    ] {ai_walk(2);};
  143. void()    hknight_walk7    =[    $walk7,        hknight_walk8    ] {ai_walk(2);};
  144. void()    hknight_walk8    =[    $walk8,        hknight_walk9    ] {ai_walk(3);};
  145. void()    hknight_walk9    =[    $walk9,        hknight_walk10    ] {ai_walk(3);};
  146. void()    hknight_walk10    =[    $walk10,    hknight_walk11    ] {ai_walk(4);};
  147. void()    hknight_walk11    =[    $walk11,    hknight_walk12    ] {ai_walk(3);};
  148. void()    hknight_walk12    =[    $walk12,    hknight_walk13    ] {ai_walk(4);};
  149. void()    hknight_walk13    =[    $walk13,    hknight_walk14    ] {ai_walk(6);};
  150. void()    hknight_walk14    =[    $walk14,    hknight_walk15    ] {ai_walk(2);};
  151. void()    hknight_walk15    =[    $walk15,    hknight_walk16    ] {ai_walk(2);};
  152. void()    hknight_walk16    =[    $walk16,    hknight_walk17    ] {ai_walk(4);};
  153. void()    hknight_walk17    =[    $walk17,    hknight_walk18    ] {ai_walk(3);};
  154. void()    hknight_walk18    =[    $walk18,    hknight_walk19    ] {ai_walk(3);};
  155. void()    hknight_walk19    =[    $walk19,    hknight_walk20    ] {ai_walk(3);};
  156. void()    hknight_walk20    =[    $walk20,    hknight_walk1    ] {ai_walk(2);};
  157.  
  158. //===========================================================================
  159.  
  160. void()    hknight_run1    =[    $run1,        hknight_run2    ] {
  161. hk_idle_sound();
  162. ai_run (20); CheckForCharge (); };
  163. void()    hknight_run2    =[    $run2,        hknight_run3    ] {ai_run(25);};
  164. void()    hknight_run3    =[    $run3,        hknight_run4    ] {ai_run(18);};
  165. void()    hknight_run4    =[    $run4,        hknight_run5    ] {ai_run(16);};
  166. void()    hknight_run5    =[    $run5,        hknight_run6    ] {ai_run(14);};
  167. void()    hknight_run6    =[    $run6,        hknight_run7    ] {ai_run(25);};
  168. void()    hknight_run7    =[    $run7,        hknight_run8    ] {ai_run(21);};
  169. void()    hknight_run8    =[    $run8,        hknight_run1    ] {ai_run(13);};
  170.  
  171. //============================================================================
  172.  
  173. void()    hknight_pain1    =[    $pain1,        hknight_pain2    ] {sound (self, CHAN_VOICE, "hknight/pain1.wav", 1, ATTN_NORM);};
  174. void()    hknight_pain2    =[    $pain2,        hknight_pain3    ] {};
  175. void()    hknight_pain3    =[    $pain3,        hknight_pain4    ] {};
  176. void()    hknight_pain4    =[    $pain4,        hknight_pain5    ] {};
  177. void()    hknight_pain5    =[    $pain5,        hknight_run1    ] {};
  178.  
  179. //============================================================================
  180.  
  181. void()    hknight_die1    =[    $death1,    hknight_die2    ] {ai_forward(10);};
  182. void()    hknight_die2    =[    $death2,    hknight_die3    ] {ai_forward(8);};
  183. void()    hknight_die3    =[    $death3,    hknight_die4    ]
  184. {self.solid = SOLID_NOT; ai_forward(7);};
  185. void()    hknight_die4    =[    $death4,    hknight_die5    ] {};
  186. void()    hknight_die5    =[    $death5,    hknight_die6    ] {};
  187. void()    hknight_die6    =[    $death6,    hknight_die7    ] {};
  188. void()    hknight_die7    =[    $death7,    hknight_die8    ] {};
  189. void()    hknight_die8    =[    $death8,    hknight_die9    ] {ai_forward(10);};
  190. void()    hknight_die9    =[    $death9,    hknight_die10    ] {ai_forward(11);};
  191. void()    hknight_die10    =[    $death10,    hknight_die11    ] {};
  192. void()    hknight_die11    =[    $death11,    hknight_die12    ] {};
  193. void()    hknight_die12    =[    $death12,    hknight_die12    ] {};
  194.  
  195. void()    hknight_dieb1    =[    $deathb1,    hknight_dieb2    ] {};
  196. void()    hknight_dieb2    =[    $deathb2,    hknight_dieb3    ] {};
  197. void()    hknight_dieb3    =[    $deathb3,    hknight_dieb4    ]
  198. {self.solid = SOLID_NOT;};
  199. void()    hknight_dieb4    =[    $deathb4,    hknight_dieb5    ] {};
  200. void()    hknight_dieb5    =[    $deathb5,    hknight_dieb6    ] {};
  201. void()    hknight_dieb6    =[    $deathb6,    hknight_dieb7    ] {};
  202. void()    hknight_dieb7    =[    $deathb7,    hknight_dieb8    ] {};
  203. void()    hknight_dieb8    =[    $deathb8,    hknight_dieb9    ] {};
  204. void()    hknight_dieb9    =[    $deathb9,    hknight_dieb9    ] {};
  205.  
  206. void() hknight_die =
  207. {
  208. // check for gib
  209.     if (self.health < -40)
  210.     {
  211.         sound (self, CHAN_VOICE, "player/udeath.wav", 1, ATTN_NORM);
  212.         ThrowHead ("progs/h_hellkn.mdl", self.health);
  213.         ThrowGib ("progs/gib1.mdl", self.health);
  214.         ThrowGib ("progs/gib2.mdl", self.health);
  215.         ThrowGib ("progs/gib3.mdl", self.health);
  216.         return;
  217.     }
  218.  
  219. // regular death
  220.     sound (self, CHAN_VOICE, "hknight/death1.wav", 1, ATTN_NORM);
  221.     if (random() > 0.5)
  222.         hknight_die1 ();
  223.     else
  224.         hknight_dieb1 ();
  225. };
  226.  
  227.  
  228. //============================================================================
  229.  
  230. void()    hknight_magica1 =[    $magica1,    hknight_magica2    ] {ai_face();};
  231. void()    hknight_magica2 =[    $magica2,    hknight_magica3    ] {ai_face();};
  232. void()    hknight_magica3 =[    $magica3,    hknight_magica4    ] {ai_face();};
  233. void()    hknight_magica4 =[    $magica4,    hknight_magica5    ] {ai_face();};
  234. void()    hknight_magica5 =[    $magica5,    hknight_magica6    ] {ai_face();};
  235. void()    hknight_magica6 =[    $magica6,    hknight_magica7    ] {ai_face();};
  236. void()    hknight_magica7 =[    $magica7,    hknight_magica8    ] {hknight_shot(-2);};
  237. void()    hknight_magica8 =[    $magica8,    hknight_magica9    ] {hknight_shot(-1);};
  238. void()    hknight_magica9 =[    $magica9,    hknight_magica10] {hknight_shot(0);};
  239. void()    hknight_magica10 =[    $magica10,    hknight_magica11] {hknight_shot(1);};
  240. void()    hknight_magica11 =[    $magica11,    hknight_magica12] {hknight_shot(2);};
  241. void()    hknight_magica12 =[    $magica12,    hknight_magica13] {hknight_shot(3);};
  242. void()    hknight_magica13 =[    $magica13,    hknight_magica14] {ai_face();};
  243. void()    hknight_magica14 =[    $magica14,    hknight_run1    ] {ai_face();};
  244.  
  245. //============================================================================
  246.  
  247. void()    hknight_magicb1 =[    $magicb1,    hknight_magicb2    ] {ai_face();};
  248. void()    hknight_magicb2 =[    $magicb2,    hknight_magicb3    ] {ai_face();};
  249. void()    hknight_magicb3 =[    $magicb3,    hknight_magicb4    ] {ai_face();};
  250. void()    hknight_magicb4 =[    $magicb4,    hknight_magicb5    ] {ai_face();};
  251. void()    hknight_magicb5 =[    $magicb5,    hknight_magicb6    ] {ai_face();};
  252. void()    hknight_magicb6 =[    $magicb6,    hknight_magicb7    ] {ai_face();};
  253. void()    hknight_magicb7 =[    $magicb7,    hknight_magicb8    ] {hknight_shot(-2);};
  254. void()    hknight_magicb8 =[    $magicb8,    hknight_magicb9    ] {hknight_shot(-1);};
  255. void()    hknight_magicb9 =[    $magicb9,    hknight_magicb10] {hknight_shot(0);};
  256. void()    hknight_magicb10 =[    $magicb10,    hknight_magicb11] {hknight_shot(1);};
  257. void()    hknight_magicb11 =[    $magicb11,    hknight_magicb12] {hknight_shot(2);};
  258. void()    hknight_magicb12 =[    $magicb12,    hknight_magicb13] {hknight_shot(3);};
  259. void()    hknight_magicb13 =[    $magicb13,    hknight_run1] {ai_face();};
  260.  
  261. //============================================================================
  262.  
  263. void()    hknight_magicc1 =[    $magicc1,    hknight_magicc2    ] {ai_face();};
  264. void()    hknight_magicc2 =[    $magicc2,    hknight_magicc3    ] {ai_face();};
  265. void()    hknight_magicc3 =[    $magicc3,    hknight_magicc4    ] {ai_face();};
  266. void()    hknight_magicc4 =[    $magicc4,    hknight_magicc5    ] {ai_face();};
  267. void()    hknight_magicc5 =[    $magicc5,    hknight_magicc6    ] {ai_face();};
  268. void()    hknight_magicc6 =[    $magicc6,    hknight_magicc7    ] {hknight_shot(-2);};
  269. void()    hknight_magicc7 =[    $magicc7,    hknight_magicc8    ] {hknight_shot(-1);};
  270. void()    hknight_magicc8 =[    $magicc8,    hknight_magicc9    ] {hknight_shot(0);};
  271. void()    hknight_magicc9 =[    $magicc9,    hknight_magicc10] {hknight_shot(1);};
  272. void()    hknight_magicc10 =[    $magicc10,    hknight_magicc11] {hknight_shot(2);};
  273. void()    hknight_magicc11 =[    $magicc11,    hknight_run1] {hknight_shot(3);};
  274.  
  275. //===========================================================================
  276.  
  277. void()    hknight_char_a1    =[    $char_a1,    hknight_char_a2    ] {ai_charge(20);};
  278. void()    hknight_char_a2    =[    $char_a2,    hknight_char_a3    ] {ai_charge(25);};
  279. void()    hknight_char_a3    =[    $char_a3,    hknight_char_a4    ] {ai_charge(18);};
  280. void()    hknight_char_a4    =[    $char_a4,    hknight_char_a5    ] {ai_charge(16);};
  281. void()    hknight_char_a5    =[    $char_a5,    hknight_char_a6    ] {ai_charge(14);};
  282. void()    hknight_char_a6    =[    $char_a6,    hknight_char_a7    ] {ai_charge(20); ai_melee();};
  283. void()    hknight_char_a7    =[    $char_a7,    hknight_char_a8    ] {ai_charge(21); ai_melee();};
  284. void()    hknight_char_a8    =[    $char_a8,    hknight_char_a9    ] {ai_charge(13); ai_melee();};
  285. void()    hknight_char_a9    =[    $char_a9,    hknight_char_a10    ] {ai_charge(20); ai_melee();};
  286. void()    hknight_char_a10=[    $char_a10,    hknight_char_a11    ] {ai_charge(20); ai_melee();};
  287. void()    hknight_char_a11=[    $char_a11,    hknight_char_a12    ] {ai_charge(18); ai_melee();};
  288. void()    hknight_char_a12=[    $char_a12,    hknight_char_a13    ] {ai_charge(16);};
  289. void()    hknight_char_a13=[    $char_a13,    hknight_char_a14    ] {ai_charge(14);};
  290. void()    hknight_char_a14=[    $char_a14,    hknight_char_a15    ] {ai_charge(25);};
  291. void()    hknight_char_a15=[    $char_a15,    hknight_char_a16    ] {ai_charge(21);};
  292. void()    hknight_char_a16=[    $char_a16,    hknight_run1    ] {ai_charge(13);};
  293.  
  294. //===========================================================================
  295.  
  296. void()    hknight_char_b1    =[    $char_b1,    hknight_char_b2    ]
  297. {CheckContinueCharge (); ai_charge(23); ai_melee();};
  298. void()    hknight_char_b2    =[    $char_b2,    hknight_char_b3    ] {ai_charge(17); ai_melee();};
  299. void()    hknight_char_b3    =[    $char_b3,    hknight_char_b4    ] {ai_charge(12); ai_melee();};
  300. void()    hknight_char_b4    =[    $char_b4,    hknight_char_b5    ] {ai_charge(22); ai_melee();};
  301. void()    hknight_char_b5    =[    $char_b5,    hknight_char_b6    ] {ai_charge(18); ai_melee();};
  302. void()    hknight_char_b6    =[    $char_b6,    hknight_char_b1    ] {ai_charge(8); ai_melee();};
  303.  
  304. //===========================================================================
  305.  
  306. void()    hknight_slice1    =[    $slice1,    hknight_slice2    ] {ai_charge(9);};
  307. void()    hknight_slice2    =[    $slice2,    hknight_slice3    ] {ai_charge(6);};
  308. void()    hknight_slice3    =[    $slice3,    hknight_slice4    ] {ai_charge(13);};
  309. void()    hknight_slice4    =[    $slice4,    hknight_slice5    ] {ai_charge(4);};
  310. void()    hknight_slice5    =[    $slice5,    hknight_slice6    ] {ai_charge(7); ai_melee();};
  311. void()    hknight_slice6    =[    $slice6,    hknight_slice7    ] {ai_charge(15); ai_melee();};
  312. void()    hknight_slice7    =[    $slice7,    hknight_slice8    ] {ai_charge(8); ai_melee();};
  313. void()    hknight_slice8    =[    $slice8,    hknight_slice9    ] {ai_charge(2); ai_melee();};
  314. void()    hknight_slice9    =[    $slice9,    hknight_slice10    ] {ai_melee();};
  315. void()    hknight_slice10    =[    $slice10,    hknight_run1    ] {ai_charge(3);};
  316.  
  317. //===========================================================================
  318.  
  319. void()    hknight_smash1    =[    $smash1,    hknight_smash2    ] {ai_charge(1);};
  320. void()    hknight_smash2    =[    $smash2,    hknight_smash3    ] {ai_charge(13);};
  321. void()    hknight_smash3    =[    $smash3,    hknight_smash4    ] {ai_charge(9);};
  322. void()    hknight_smash4    =[    $smash4,    hknight_smash5    ] {ai_charge(11);};
  323. void()    hknight_smash5    =[    $smash5,    hknight_smash6    ] {ai_charge(10); ai_melee();};
  324. void()    hknight_smash6    =[    $smash6,    hknight_smash7    ] {ai_charge(7); ai_melee();};
  325. void()    hknight_smash7    =[    $smash7,    hknight_smash8    ] {ai_charge(12); ai_melee();};
  326. void()    hknight_smash8    =[    $smash8,    hknight_smash9    ] {ai_charge(2); ai_melee();};
  327. void()    hknight_smash9    =[    $smash9,    hknight_smash10    ] {ai_charge(3); ai_melee();};
  328. void()    hknight_smash10    =[    $smash10,    hknight_smash11    ] {ai_charge(0);};
  329. void()    hknight_smash11    =[    $smash11,    hknight_run1    ] {ai_charge(0);};
  330.  
  331. //============================================================================
  332.  
  333. void()    hknight_watk1    =[    $w_attack1,    hknight_watk2    ] {ai_charge(2);};
  334. void()    hknight_watk2    =[    $w_attack2,    hknight_watk3    ] {ai_charge(0);};
  335. void()    hknight_watk3    =[    $w_attack3,    hknight_watk4    ] {ai_charge(0);};
  336. void()    hknight_watk4    =[    $w_attack4,    hknight_watk5    ] {ai_melee();};
  337. void()    hknight_watk5    =[    $w_attack5,    hknight_watk6    ] {ai_melee();};
  338. void()    hknight_watk6    =[    $w_attack6,    hknight_watk7    ] {ai_melee();};
  339. void()    hknight_watk7    =[    $w_attack7,    hknight_watk8    ] {ai_charge(1);};
  340. void()    hknight_watk8    =[    $w_attack8,    hknight_watk9    ] {ai_charge(4);};
  341. void()    hknight_watk9    =[    $w_attack9,    hknight_watk10    ] {ai_charge(5);};
  342. void()    hknight_watk10    =[    $w_attack10,    hknight_watk11    ] {ai_charge(3); ai_melee();};
  343. void()    hknight_watk11    =[    $w_attack11,    hknight_watk12    ] {ai_charge(2); ai_melee();};
  344. void()    hknight_watk12    =[    $w_attack12,    hknight_watk13    ] {ai_charge(2); ai_melee();};
  345. void()    hknight_watk13    =[    $w_attack13,    hknight_watk14    ] {ai_charge(0);};
  346. void()    hknight_watk14    =[    $w_attack14,    hknight_watk15    ] {ai_charge(0);};
  347. void()    hknight_watk15    =[    $w_attack15,    hknight_watk16    ] {ai_charge(0);};
  348. void()    hknight_watk16    =[    $w_attack16,    hknight_watk17    ] {ai_charge(1);};
  349. void()    hknight_watk17    =[    $w_attack17,    hknight_watk18    ] {ai_charge(1); ai_melee();};
  350. void()    hknight_watk18    =[    $w_attack18,    hknight_watk19    ] {ai_charge(3); ai_melee();};
  351. void()    hknight_watk19    =[    $w_attack19,    hknight_watk20    ] {ai_charge(4); ai_melee();};
  352. void()    hknight_watk20    =[    $w_attack20,    hknight_watk21    ] {ai_charge(6);};
  353. void()    hknight_watk21    =[    $w_attack21,    hknight_watk22    ] {ai_charge(7);};
  354. void()    hknight_watk22    =[    $w_attack22,    hknight_run1    ] {ai_charge(3);};
  355.  
  356. //============================================================================
  357.  
  358. void() hk_idle_sound =
  359. {
  360.     if (random() < 0.2)
  361.         sound (self, CHAN_VOICE, "hknight/idle.wav", 1, ATTN_NORM);
  362. };
  363.  
  364. void(entity attacker, float damage)    hknight_pain =
  365. {
  366.     if (self.pain_finished > time)
  367.         return;
  368.  
  369.     sound (self, CHAN_VOICE, "hknight/pain1.wav", 1, ATTN_NORM);
  370.  
  371.     if (time - self.pain_finished > 5)
  372.     {    // allways go into pain frame if it has been a while
  373.         hknight_pain1 ();
  374.         self.pain_finished = time + 1;
  375.         return;
  376.     }
  377.     
  378.     if ((random()*30 > damage) )
  379.         return;        // didn't flinch
  380.  
  381.     self.pain_finished = time + 1;
  382.     hknight_pain1 ();
  383. };
  384.  
  385. float    hknight_type;
  386.  
  387. void() hknight_melee =
  388. {
  389.     hknight_type = hknight_type + 1;
  390.  
  391.     sound (self, CHAN_WEAPON, "hknight/slash1.wav", 1, ATTN_NORM);
  392.     if (hknight_type == 1)
  393.         hknight_slice1 ();
  394.     else if (hknight_type == 2)
  395.         hknight_smash1 ();
  396.     else if (hknight_type == 3)
  397.     {
  398.         hknight_watk1 ();
  399.         hknight_type = 0;
  400.     }
  401. };
  402.  
  403. /*QUAKED monster_hell_knight (1 0 0) (-16 -16 -24) (16 16 40) Ambush
  404. */
  405. void() monster_hell_knight =
  406. {
  407.     if (deathmatch && deathmatch != 3) // AXXMM
  408. //    if (deathmatch) // Original code
  409.  
  410.     {
  411.         remove(self);
  412.         return;
  413.     }
  414.     precache_model2 ("progs/hknight.mdl");
  415.     precache_model2 ("progs/k_spike.mdl");
  416.     precache_model2 ("progs/h_hellkn.mdl");
  417.  
  418.     
  419.     precache_sound2 ("hknight/attack1.wav");
  420.     precache_sound2 ("hknight/death1.wav");
  421.     precache_sound2 ("hknight/pain1.wav");
  422.     precache_sound2 ("hknight/sight1.wav");
  423.     precache_sound ("hknight/hit.wav");        // used by C code, so don't sound2
  424.     precache_sound2 ("hknight/slash1.wav");
  425.     precache_sound2 ("hknight/idle.wav");
  426.     precache_sound2 ("hknight/grunt.wav");
  427.  
  428.     precache_sound ("knight/sword1.wav");
  429.     precache_sound ("knight/sword2.wav");
  430.     
  431.     self.solid = SOLID_SLIDEBOX;
  432.     self.movetype = MOVETYPE_STEP;
  433.  
  434.     setmodel (self, "progs/hknight.mdl");
  435.  
  436.     setsize (self, '-16 -16 -24', '16 16 40');
  437.     self.health = 250;
  438.  
  439.     self.th_stand = hknight_stand1;
  440.     self.th_walk = hknight_walk1;
  441.     self.th_run = hknight_run1;
  442.     self.th_melee = hknight_melee;
  443.     self.th_missile = hknight_magicc1;
  444.     self.th_pain = hknight_pain;
  445.     self.th_die = hknight_die;
  446.     
  447.     walkmonster_start ();
  448. };
  449.